Packet data communication systems are known in both the wireless and wireline environments. In the wireless environment, a packet data system includes packet data routers, data controllers, base stations, and wireless communication units (e.g., mobile radios, portable radios, radiotelephones, or wireless data terminals). In the wireline environment, a packet data system includes switches and wireline communication devices (e.g., personal computers, computer servers, mainframes, laptop computers, personal communication devices, or custom data terminals). Packet data communications are also known to exist between wireless and wireline systems.
Packet data communications rely on accurate tracking of the data packets transmitted from one device to another. Accurate tracking of transmitted and received data packets is crucial to insure that a complete data communication is indeed transmitted by a sending device (e.g., a base station) and received by a receiving device (e.g., a portable radio). Data packets are typically tracked by monitoring a packet sequence number contained in the data packet to be transmitted or that was most recently received. Each data packet includes a packet sequence number to indicate the sequence location of the data packet with respect to other data packets that constitute the complete data communication. Thus, by comparing the packet sequence number of the received data packet with an expected packet sequence number, the receiving device can determine whether the sending device transmitted the correct packet.
To assist the sending device in its attempt to transmit the correct data packet, the receiving device transmits an acknowledgment of received data packets that indicates the packet sequence number (receive tracking number) of the data packet the receiving device next expects to receive. Accordingly, by comparing the receive tracking number of the acknowledgment with a packet sequence number (transmit tracking number) of the next data packet expected to be transmitted, the sending device can determine whether it is about to transmit the data packet the receiving device expects to receive and, if the sending device is not about to transmit such a data packet, the sending device can correct its packet transmission sequence to conform with the receiving device's wishes.
Although the above process for tracking and validating data packets in a packet data communication system works fairly well, tracking problems can occur due to communication errors in the system. For example, a processor in the sending device typically increments the transmit tracking number upon delivery of a data packet to the sending device's transmitter. However, depending upon the system configuration and the allocation of priorities in the system, the sending device might not actually transmit the data packet for a substantial length of time (e.g., several seconds) after receiving it from the processor. For example, in integrated voice and data radio systems, voice traffic is generally given priority over data traffic. Thus, if voice traffic is heavy, the data packet will remain in the sending device's transmit buffer until voice activity decreases by an amount sufficient to allow communication channels to be granted for data traffic.
During the time when the data packet is buffered, the receiving device may incur a communication protocol error and transmit an acknowledgment packet that indicates that the next packet to be received is the data packet the sending device's transmit tracking number indicates is the next packet to be sent. If, during the time when the data packet is buffered, the sending device receives the acknowledgment, the sending device would not detect the communication error present in the receiving device because the transmit tracking number in the sending device matches the errant receive tracking number in the acknowledgment. The receive tracking number in the acknowledgment is errant because the packet sequence number of the data packet indicated as being next in sequence to be received is larger than the packet sequence number of the packet stored in the sending device's transmit buffer. Consequently, the sending device would continue sending data packets to a corrupted receiving device instead of identifying a fault in the receiving device and terminating the data communication.
Therefore, a need exists for a method and apparatus of tracking data packets in a packet data communication system that more accurately facilitates the detection of communication errors that occur in the system.